Notes and Setup
This is an initial attemmt at compiling the data. Future work includes: 1. Developing more rigorous QAQC procedures 2. Implimenting said procedures 3. Increasing the spead of the database upload…[right now it took over 7.5 hours!]
Water Level QAQC
Plots
This is preliminary data and will undergo more rigurous QAQC at a later date. I will go back and plot individually later as part of the QAQC procedure! :)
[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
[[6]]
[[7]]
[[8]]
[[9]]
[[10]]
[[11]]
[[12]]
[[13]]
[[14]]
[[15]]
[[16]]
[[17]]
[[18]]
[[19]]
NA
Database Import
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
Site DB Upland Well has been entered into the samplingfeatures table.
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
Time difference of 2.780924 mins
[1] TRUE
LS0tCnRpdGxlOiAiMTAvMTEvMTggRGF0YSBEb3dubG9hZCAmIFByb2Nlc3NpbmciCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICBodG1sX25vdGVib29rOgogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCi0tLQoKI05vdGVzIGFuZCBTZXR1cAoKVGhpcyBpcyBhbiBpbml0aWFsIGF0dGVtbXQgYXQgY29tcGlsaW5nIHRoZSBkYXRhLiAgRnV0dXJlIHdvcmsgaW5jbHVkZXM6CjEuICBEZXZlbG9waW5nIG1vcmUgcmlnb3JvdXMgUUFRQyBwcm9jZWR1cmVzCjIuICBJbXBsaW1lbnRpbmcgc2FpZCBwcm9jZWR1cmVzCjMuICBJbmNyZWFzaW5nIHRoZSBzcGVhZCBvZiB0aGUgZGF0YWJhc2UgdXBsb2FkLi4uW3JpZ2h0IG5vdyBpdCB0b29rIG92ZXIgNy41IGhvdXJzIV0KCgpgYGB7ciBzZXR1cCwgZWNobz1GQUxTRSwgcmVzdWx0cz0iaGlkZSIsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiNDbGVhciBNZW1vcnkKcm0obGlzdD1scyhhbGw9VFJVRSkpCgojTG9hZCBSZXF1aXJlZCBQYWNrYWdlcwpsaWJyYXJ5KGRwbHlyKSAgIApsaWJyYXJ5KGRldnRvb2xzKQpsaWJyYXJ5KFJTUUxpdGUpCmxpYnJhcnkoREJJKQpsaWJyYXJ5KHh0cykKbGlicmFyeShkeWdyYXBocykKbGlicmFyeShSUG9zdGdyZVNRTCkKCiNMb2FkIFBhbG1lciBMYWIgdG9vbHMKc291cmNlKCJ+L3ByZXNzdXJlX3RyYW5zZHVjZXJzL2RiX2dldF93YXRlcl9sZXZlbF90cy5SIikKbGlicmFyeShyb2RtMikKCiNEZWZpbmUgd29ya2luZyBkaXJlY3RvcnkgYW5kIGRhdGFiYXNlIGxvY2F0aW9uCndvcmtpbmdfZGlyPC0iLy9uZnMvcGFsbWVyLWdyb3VwLWRhdGEvQ2hvcHRhbmsvTmF0ZS9QVF9EYXRhLzIwMTgxMTAxX0Rvd25sb2Fkcy8iCgojRG93bmxvYWQgRGF0YQptYXN0ZXI8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2Rpciwid2VsbF9sb2cuY3N2IikpCgojQ3JlYXRlIHRlbXAgZmlsZQpkaXIuY3JlYXRlKHBhc3RlMCh3b3JraW5nX2RpciwiaW50ZXJtZWRpYXRlIikpCgojQ29ubmVjdCB0byBkYXRhYmFzZQpkYiA8LSBkYkNvbm5lY3QoUG9zdGdyZVNRTCgpLCAKICAgICAgICAgICAgICAgIGhvc3QgICAgID0gInNlc3luYy1wb3N0Z2lzMDEucmVzZWFyY2guc2VzeW5jLm9yZyIsCiAgICAgICAgICAgICAgICBkYm5hbWUgICA9ICJjaG9wdGFuayIsCiAgICAgICAgICAgICAgICB1c2VyICAgICA9ICJwYWxtZXJncm91cCIsIAogICAgICAgICAgICAgICAgcGFzc3dvcmQgPSByZWFkbGluZShwcm9tcHQ9IkVudGVyIHBhc3N3b3JkOiAiKSkKYGBgCgpgYGB7ciBpbml0aWFsLWNoZWNrcywgZWNobz1GQUxTRSwgcmVzdWx0cz0iaGlkZSJ9CiNDaGVjayB0byBtYWtlIHN1cmUgc2l0ZSBuYW1lcyBhcmUgaW4gREItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphPC1hcy5tYXRyaXgobWFzdGVyWywiU2l0ZV9OYW1lIl0sIG5jb2w9MSkKYjwtZ2V0X3NpdGVfbmFtZXNfbGlrZSgiICIsZGIpI2FzLm1hdHJpeChkYkdldFF1ZXJ5KGRiLCJTRUxFQ1QgU2FtcGxpbmdGZWF0dXJlQ29kZSBGUk9NIFNhbXBsaW5nRmVhdHVyZXMiKSkKaWYobGVuZ3RoKGFbIShhICVpbiUgYildKSE9MCl7CiAgd2FybmluZyhwYXN0ZTAoIlNpdGUgTmFtZXMgaW4gV2VsbCBMb2cgYW5kIERhdGFiYXNlIGRvIG5vdCBtYXRjaCEhIikpCiAgcHJpbnQoYVshKGEgJWluJSBiKV0pCn1lbHNlewogICJTaXRlIE5hbWVzIE1hdGNoISIKfQoKI0NoZWNrIHRvIG1ha2Ugc3VyZSBTb25kZSBJRCBpbiB3ZWxsIGxvZyBhbmQgU2VyaWFsIE51bWJlciBpbiBmaWxlcyBtYXRjaC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZ1bjwtZnVuY3Rpb24obil7CiAgI1JlYWQgZGF0YQogIHRlbXA8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwiZXhwb3J0LyIsIGxvZ3Nbbl0pLCBza2lwPTEpCiAgCiAgI2V4dHJhY3Qgc2VyaWFsIG51bWJlcgogIHNlcmlhbF9udW1iZXI8LWNvbG5hbWVzKHRlbXApW2dyZXAoIkxHUiIsY29sbmFtZXModGVtcCkpXVsxXSAgI0ZpbmQgY29sbHVtbiBuYW1lIHdpdGggc2VyaWFsIG51bWJlcgogIHNlcmlhbF9udW1iZXI8LXN1YnN0cihzZXJpYWxfbnVtYmVyLCAgICNpc29sYXRlIHNlcmlhbCBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZ2V4cHIoIlNFTi5TLk4iLHNlcmlhbF9udW1iZXIpW1sxXV1bMV0rOSwgI1N0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgIG5jaGFyKHNlcmlhbF9udW1iZXIpLTEpICNzdG9wCiAgc2VyaWFsX251bWJlcjwtYXMubnVtZXJpYyhzZXJpYWxfbnVtYmVyKSAKICAKICAjZXhwb3J0IHNlcmlhbCBudW1iZXIKICBzZXJpYWxfbnVtYmVyCn0KI0NyZWF0ZSBsaXN0IG9mIGZpbGVzIApsb2dzPC1saXN0LmZpbGVzKHBhc3RlMCh3b3JraW5nX2RpciwiZXhwb3J0IikpCmxvZ3M8LWxvZ3NbbG9ncyE9ImJhcm8uY3N2Il0KYTwtc2FwcGx5KHNlcSgxLGxlbmd0aChsb2dzKSksIGZ1bikgIApiPC1tYXN0ZXIkU29uZGVfSUQgIAppZihsZW5ndGgoYVshKGEgJWluJSBiKV0pIT0wKXsKICB3YXJuaW5nKHBhc3RlMCgiU29uZGUgc2VyaWFsIG51bWJlciBpbiBXZWxsIExvZyBhbmQgZGF0YSBmaWxlcyBkbyBub3QgbWF0Y2ghISIpKQogIHByaW50KGFbIShhICVpbiUgYildKQp9ZWxzZXsKICAiU2VyaWFsIE51bWJlcnMgTWF0Y2giCn0KCiNDaGVjayB1bml0cyBpbiBmaWxlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojQ3JlYXRlIGZ1bmN0b2luIHRvIGNoZWNrIHVuaXRzIGluIGZpbGUKZnVuPC1mdW5jdGlvbihuKXsKICAjRG9ud2xvYWQgZGF0YQogIHRlbXA8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwiZXhwb3J0LyIsIGxvZ3Nbbl0pLCBza2lwPTEpCiAgCiAgI0NoZWNrIHByZXNzdXJlIHVuaXRzCiAgcHJlc3NfdW5pdHM8LWNvbG5hbWVzKHRlbXApW2dyZXAoImtQYSIsY29sbmFtZXModGVtcCkpXVsxXSAKICBwcmVzc191bml0czwtc3Vic3RyKHByZXNzX3VuaXRzLCAgICNpc29sYXRlIHRlbXBlcmF0dXJlIHVuaXRzCiAgICAgICAgICAgICAgICAgICAgIGdyZWdleHByKCJBYnMuUHJlcyIsIHByZXNzX3VuaXRzKVtbMV1dWzFdKzEwLCAjU3RhcnQKICAgICAgICAgICAgICAgICAgICAgZ3JlZ2V4cHIoIkFicy5QcmVzIiwgcHJlc3NfdW5pdHMpW1sxXV1bMV0rMTIpICNzdG9wCgogICNDaGVjayB0ZW1wIHVuaXRzCiAgdGVtcF91bml0czwtY29sbmFtZXModGVtcClbZ3JlcCgiVGVtcCIsY29sbmFtZXModGVtcCkpXVsxXSAKICB0ZW1wX3VuaXRzPC1zdWJzdHIodGVtcF91bml0cywgICAjaXNvbGF0ZSB0ZW1wZXJhdHVyZSB1bml0cwogICAgICAgICAgICAgICAgICAgICBncmVnZXhwcigiVGVtcCIsIHRlbXBfdW5pdHMpW1sxXV1bMV0rNywgI1N0YXJ0CiAgICAgICAgICAgICAgICAgICAgIGdyZWdleHByKCJUZW1wIiwgdGVtcF91bml0cylbWzFdXVsxXSs3KSAjc3RvcAogIAogICNQcmludCB1bml0cwogIGRhdGEuZnJhbWUoZmlsZW5hbWU9bG9nc1tuXSwgCiAgICAgICAgICAgICBwcmVzc3VyZT1wcmVzc191bml0cywgCiAgICAgICAgICAgICB0ZW1wZXJhdHVyZT10ZW1wX3VuaXRzKQp9Cng8LWxhcHBseShzZXEoMSwgbGVuZ3RoKGxvZ3MpKSwgZnVuKQp4PC1kYXRhLmZyYW1lKGRvLmNhbGwocmJpbmQseCkpCnByaW50KHgpCmBgYAoKYGBge3IgcHQtZGF0YS13cmFuZ2xpbmcsIGVjaG89RkFMU0UsIHJlc3VsdHM9ImhpZGUifQojY3JlYXRlIGZ1bmN0aW9uIHRvIGRvd25sb2FkIGxvZ3MsIGNsZWFuLCBhbmQgcmV3cml0ZSBpbiB0ZW1wIGZvbGRlcgpmdW48LWZ1bmN0aW9uKG4pewogICNTZXR1cH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KICAjUmVhZCBkYXRhCiAgZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwiZXhwb3J0LyIsIGxvZ3Nbbl0pLCBza2lwPTEpCiAgCiAgI0RlZmluZSBzZXJpYWwgbnVtYmVyCiAgc2VyaWFsX251bWJlcjwtY29sbmFtZXMoZGYpW2dyZXAoIkxHUiIsY29sbmFtZXMoZGYpKV1bMV0gICNGaW5kIGNvbGx1bW4gbmFtZSB3aXRoIHNlcmlhbCBudW1iZXIKICBzZXJpYWxfbnVtYmVyPC1zdWJzdHIoc2VyaWFsX251bWJlciwgICAjaXNvbGF0ZSBzZXJpYWwgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgIGdyZWdleHByKCJTRU4uUy5OIixzZXJpYWxfbnVtYmVyKVtbMV1dWzFdKzksICNTdGFydAogICAgICAgICAgICAgICAgICAgICAgICBuY2hhcihzZXJpYWxfbnVtYmVyKS0xKSAjc3RvcAogIHNlcmlhbF9udW1iZXI8LWFzLm51bWVyaWMoc2VyaWFsX251bWJlcikgCiAgCiAgI0RldGVybWluZSB0aW1lem9uZSBvZmZzZXQgaW4gc2Vjb25kcwogIHRpbWVfb2Zmc2V0PC1jb2xuYW1lcyhkZilbZ3JlcCgiR01UIixjb2xuYW1lcyhkZikpXSAgI0dyYWIgY29sbHVtbiBuYW1lIHcvIHRpbWUgb2Zmc2V0CiAgdGltZV9vZmZzZXQ8LWFzLm51bWVyaWMoc3Vic3RyKHRpbWVfb2Zmc2V0LCAxNiwxOCkpKjM2MDArYXMubnVtZXJpYyhzdWJzdHIodGltZV9vZmZzZXQsIDE5LDIwKSkqNjAKICAKICAjRGVmaW5lIHZhcmlhYmxlcyBmcm9tIHdlbGwgbG9nCiAgc2l0ZV9uYW1lPC1tYXN0ZXIkU2l0ZV9OYW1lW21hc3RlciRTb25kZV9JRD09c2VyaWFsX251bWJlcl0KICBkZXBsb3ltZW50PC1zdHJwdGltZShwYXN0ZShtYXN0ZXIkRGF0ZVttYXN0ZXIkU29uZGVfSUQ9PXNlcmlhbF9udW1iZXJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3RlciRUaW1lW21hc3RlciRTb25kZV9JRD09c2VyaWFsX251bWJlcl0pLCAKICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IiVtLyVkLyVZICVIOiVNIiwgdHo9IkdNVCIpCiAgZGVwbG95bWVudDwtZGVwbG95bWVudC10aW1lX29mZnNldAogIHJlbGF0aXZlX3dsPC1tYXN0ZXIkUmVsYXRpdmVfV2F0ZXJfTGV2ZWxfbVttYXN0ZXIkU29uZGVfSUQ9PXNlcmlhbF9udW1iZXJdCiAgICBpZihpcy5uYShyZWxhdGl2ZV93bCk9PVQgfHwgbGVuZ3RoKHJlbGF0aXZlX3dsKT09MCl7cmVsYXRpdmVfd2w8LTB9CiAgYmFyb19maWxlPC1tYXN0ZXIkYmFyb19maWxlW21hc3RlciRTb25kZV9JRD09c2VyaWFsX251bWJlcl0KICAKICAjd2F0ZXIgbGV2ZWwgdGltZSBzZXJlaXN+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KICAjc3Vic2V0IGRhdGFmcmFtZSB0byB0ZW1wLCBhYnNfcHJlcywgYW5kIHRlbXAKICBkZjwtZGZbLGMoMiwzLDQpXQogIGNvbG5hbWVzKGRmKTwtYygiVGltZXN0YW1wIiwgInByZXNzdXJlQWJzb2x1dGUiLCAidGVtcF9jIikKICAKICAjZm9ybWF0IGRhdGVfdGltZQogIGRmJFRpbWVzdGFtcDwtc3RycHRpbWUoZGYkVGltZXN0YW1wLCAiJW0vJWQvJXkgJUk6JU06JVMgJXAiKS10aW1lX29mZnNldAogIGRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCiAgCiAgI2Jhcm8gZmlsZSB0aW1lIHNlcmllc35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogICNTdWJzZXQgZGF0YWZyYW1lIHRvIHRlbXAsIGFic19wcmVzLCBhbmQgdGVtcAogIGJhcm88LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwiZXhwb3J0LyIsIGJhcm9fZmlsZSksIHNraXA9MSkKICBiYXJvPC1iYXJvWyxjKDIsMyw0KV0KICBjb2xuYW1lcyhiYXJvKTwtYygiVGltZXN0YW1wIiwgImJhcm9tZXRyaWNQcmVzc3VyZSIsICJ0ZW1wX2MiKQogIAogICNmb3JtYXQgZGF0ZSBhbmQgdGltZQogIGJhcm8kVGltZXN0YW1wPC1zdHJwdGltZShiYXJvJFRpbWVzdGFtcCwgIiVtLyVkLyV5ICVJOiVNOiVTICVwIiktdGltZV9vZmZzZXQKICBiYXJvJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChiYXJvJFRpbWVzdGFtcCkKICAKICAjQ2FjbHVjdWxhdGUgd2F0ZXJsZXZlbH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KICAjY3JlYXRlIGJhcm8gaW50ZXJwb2xhdGlvbiBmdW5jdGlvbgogIGJhcm9fZnVuPC1hcHByb3hmdW4oYmFybyRUaW1lc3RhbXAsIGJhcm8kYmFyb21ldHJpY1ByZXNzdXJlKQogIAogICNjYWxjdWxhdGUgYmFybyBmb3IgZWFjaCBkZiB0aW1lIHN0ZXAKICBkZiRiYXJvbWV0cmljUHJlc3N1cmU8LWJhcm9fZnVuKGRmJFRpbWVzdGFtcCkKICAKICAjQ2FjbHVhdGUgZ2FnZSBwcmVzc3VyZQogIGRmJHByZXNzdXJlR2F1Z2U8LWRmJHByZXNzdXJlQWJzb2x1dGUtZGYkYmFyb21ldHJpY1ByZXNzdXJlCiAgCiAgI0NhbGN1bGF0ZSByZWxhdGl2ZSB3YXRlciBsZXZlbAogIGRmJGdhZ2VIZWlnaHQ8LWRmJHByZXNzdXJlR2F1Z2UvOS44MQogIAogICNXYXRlciBMZXZlbAogIGRmJHdhdGVyTGV2ZWw8LWRmJGdhZ2VIZWlnaHQrcmVsYXRpdmVfd2wKICAKICAjUHJ1bmUgd2F0ZXIgbGV2ZWwgYmFzZWQgb24gZGVwbG95bWVudCB0aW1lCiAgZGY8LWRmW2RmJFRpbWVzdGFtcDxkZXBsb3ltZW50LF0KICBkZjwtbmEub21pdChkZikKICAKICAjYWRkICJvZmZzZXQgY29sbHVtbiIKICBkZiRvZmZzZXQ8LTAKICAKICAjZGVsZXRlIHBvdGVudGlhbCBkdXBsaWNhdGVzCiAgZGY8LWRmWyFkdXBsaWNhdGVkKGRmKSxdCiAgCiAgI1dyaXRlIGRmIHRvIHRlbXAgZmlsZQogIHdyaXRlLmNzdihkZiwgcGFzdGUwKHdvcmtpbmdfZGlyLCJpbnRlcm1lZGlhdGUvIiwgc2VyaWFsX251bWJlciwiLmNzdiIpKQp9CgojQ3JlYXRlIGxpc3Qgb2YgUFQgZmlsZXMKbG9nczwtbGlzdC5maWxlcyhwYXN0ZTAod29ya2luZ19kaXIsImV4cG9ydCIpKQpsb2dzPC1sb2dzW2xvZ3MhPSJiYXJvLmNzdiJdCgojY3JlYXRlIHRlbXAgZmlsZSB0byBzdG9yZSBpbnRlcm1lZGlhdGUgZmlsZXMKZGlyLmNyZWF0ZShwYXN0ZTAod29ya2luZ19kaXIsImludGVybWVkaWF0ZSIpKQoKI1J1biBmdW5jdGlvbiAKbGFwcGx5KHNlcSgxLCBsZW5ndGgobG9ncykpLCBmdW4pCmBgYAoKI1dhdGVyIExldmVsIFFBUUMKYGBge3IgdHNfcGxvdCBmdW5jdGlvbiwgZWNobz1GQUxTRSwgcmVzdWx0cz0iaGlkZSJ9CmZ1bjwtZnVuY3Rpb24obil7CiAgI1JlYWQgZGYKICBkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCiAgZGYkVGltZXN0YW1wPC1hcy5QT1NJWGN0KGRmJFRpbWVzdGFtcCkKICBkZiR3YXRlckxldmVsPC1kZiR3YXRlckxldmVsKjEwMCsxMDAwIAogIAogICNwdWxsIHdhdGVyIGxldmVsIGZyb20gZGF0YWJhc2UKICBkZl9oaXN0b3JpYzwtTlVMTCNkYl9nZXRfd2F0ZXJfbGV2ZWxfdHMoZGIscGFzdGUobWFzdGVyJFNpdGVfTmFtZVtuXSkpCiAgCiAgI0Zvcm1hdCBkZgogIGlmKGxlbmd0aChkZl9oaXN0b3JpYyk9PTApewogICAgZGYgPC0gZGYgJT4lIHNlbGVjdChUaW1lc3RhbXAsIHdhdGVyTGV2ZWwpCiAgICBkZl94dHM8LXh0cyhkZiwgb3JkZXIuYnk9ZGYkVGltZXN0YW1wKQogICAgZGZfeHRzPC1kZl94dHNbLC0xXQogIH1lbHNlewogICAgI2FkZCBkYXR1bSBjb3JyZWN0aW9uIHRvIGRmX2hpc3RvcmljCiAgICBkZiA8LSBkZiAlPiUgc2VsZWN0KFRpbWVzdGFtcCwgd2F0ZXJMZXZlbCkKICAgIGRmX2hpc3RvcmljJHdhdGVyTGV2ZWw8LWRmX2hpc3RvcmljJHdhdGVyTGV2ZWwqMTAwKzEwMDAgIAogICAgZGZfaGlzdG9yaWM8LWRmX2hpc3RvcmljWyxjKCJUaW1lc3RhbXAiLCJ3YXRlckxldmVsIildCiAgICBkZl9oaXN0b3JpYyRncm91cDwtIm9sZCIKICAgIGRmJGdyb3VwPC0ibmV3IgogICAgZGY8LXJiaW5kKGRmX2hpc3RvcmljLCBkZikKICAgIGRmX3NwcmVhZCA8LSBkZiAlPiUgCiAgICAgICBkcGx5cjo6c2VsZWN0KFRpbWVzdGFtcCwgZ3JvdXAsIHdhdGVyTGV2ZWwpICU+JQogICAgICAgdGlkeXI6OnNwcmVhZChrZXkgPSBncm91cCwgdmFsdWUgPSB3YXRlckxldmVsKQogICAgZGZfeHRzPC14dHMoZGZfc3ByZWFkLCBvcmRlci5ieT1kZl9zcHJlYWQkVGltZXN0YW1wKQogICAgZGZfeHRzPC1kZl94dHNbLC0xXQogICAgfQogIAogICNQbG90CiAgdHNfcGxvdDwtZHlncmFwaChkZl94dHMsIG1haW49bWFzdGVyJFNpdGVfTmFtZVtuXSkgJT4lCiAgICAgICAgICAgICAgZHlSYW5nZVNlbGVjdG9yKCkgJT4lCiAgICAgICAgICAgICAgZHlMZWdlbmQoKSAlPiUKICAgICAgICAgICAgICBkeU9wdGlvbnMoc3Ryb2tlV2lkdGggPSAxLjUpICU+JQogICAgICAgICAgICAgIGR5T3B0aW9ucyhsYWJlbHNVVEMgPSBUUlVFKSAlPiUKICAgICAgICAgICAgICBkeUhpZ2hsaWdodChoaWdobGlnaHRDaXJjbGVTaXplID0gNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0U2VyaWVzQmFja2dyb3VuZEFscGhhID0gMC4yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlT25Nb3VzZU91dCA9IEZBTFNFKSAlPiUKICAgICAgICAgICAgICBkeUF4aXMoInkiLCBsYWJlbCA9ICJXYXRlciBMZXZlbCBbY21dIikKICAKICAjRXhwb3J0IFBsb3QKICByZXR1cm4odHNfcGxvdCkKfQpgYGAKCiMjUGxvdHMKVGhpcyBpcyBwcmVsaW1pbmFyeSBkYXRhIGFuZCB3aWxsIHVuZGVyZ28gbW9yZSByaWd1cm91cyBRQVFDIGF0IGEgbGF0ZXIgZGF0ZS4gSSB3aWxsIGdvIGJhY2sgYW5kIHBsb3QgaW5kaXZpZHVhbGx5IGxhdGVyIGFzIHBhcnQgb2YgdGhlIFFBUUMgcHJvY2VkdXJlISA6KSAKCmBgYHtyLCBlY2hvPUZBTFNFfQpsYXBwbHkoc2VxKDEsIGxlbmd0aChtYXN0ZXIkU2l0ZV9OYW1lKSksIGZ1bikKYGBgCgojRGF0YWJhc2UgSW1wb3J0CmBgYHtyIGRhdGFiYXNlIGltcG9ydCwgZWNobz1GQUxTRX0KI0NyZWF0ZSBmdW5jdGlvbgpmdW48LWZ1bmN0aW9uKG4pewogICNEb3dubG9hZCBpbnRlcm1lZGlhdGUgdHMgZGF0YQogIGRmPC1yZWFkLmNzdihwYXN0ZTAod29ya2luZ19kaXIsImludGVybWVkaWF0ZS8iLCBsb2dzW25dKSkKICBkZjwtZGZbLGMoIlRpbWVzdGFtcCIsIndhdGVyTGV2ZWwiKV0KICBkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKICAjU29uZGUgSUQKICBzbjwtYXMubnVtZXJpYyhzdWJzdHIobG9nc1tuXSwgMSxuY2hhcihsb2dzW25dKS00KSkKICAKICAjQ3JlYXRlIHZhcmlhYmxlIGxpc3QKICB2YXJzX2xpc3Q8LWxpc3QoIyJwcmVzc3VyZUFic29sdXRlIiAgICA9IGxpc3QoY29sdW1uID0gInByZXNzdXJlQWJzb2x1dGUiLCAgIHVuaXRzID0gIktQYSIpLAogICAgICAgICAgICAgICAgICAjImJhcm9tZXRyaWNQcmVzc3VyZSIgID0gbGlzdChjb2x1bW4gPSAiYmFyb21ldHJpY1ByZXNzdXJlIiwgdW5pdHMgPSAiS1BhIiksCiAgICAgICAgICAgICAgICAgICMicHJlc3N1cmVHYXVnZSIgICAgICAgPSBsaXN0KGNvbHVtbiA9ICJwcmVzc3VyZUdhdWdlIiwgICAgICB1bml0cyA9ICJLUGEiKSwKICAgICAgICAgICAgICAgICAgIyJnYWdlSGVpZ2h0IiAgICAgICAgICA9IGxpc3QoY29sdW1uID0gImdhZ2VIZWlnaHQiLCAgICAgICAgIHVuaXRzID0gIk1ldGVyIiksCiAgICAgICAgICAgICAgICAgICJXYXRlciBsZXZlbCIgICAgICAgICAgPSBsaXN0KGNvbHVtbiA9ICJ3YXRlckxldmVsIiwgICAgICAgICB1bml0cyA9ICJNZXRlciIpKSMsCiAgICAgICAgICAgICAgICAgICMib2Zmc2V0IiAgICAgICAgICAgICAgPSBsaXN0KGNvbHVtbiA9ICJvZmZzZXQiLCAgICAgICAgICAgICB1bml0cyA9ICJNZXRlciIpKQoKICAjSW5zZXJ0IGRhdGEgaW50byBkYXRhYmFzZQogIHQwPC1TeXMudGltZSgpCiAgZGJfaW5zZXJ0X3Jlc3VsdHNfdHMoZGIgPSBkYiwgIyBkYXRhYmFzZSBjb25uZWN0b24KICAgICAgICAgICAgICAgICAgICAgICBkYXRhdmFsdWVzID0gZGYsICMgZGF0YSBmcmFtZSBvZiB0aW1lIHNlcmllcyBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gIlBUX0Rvd25sb2FkIiwKICAgICAgICAgICAgICAgICAgICAgICBzaXRlX2NvZGUgPSBhcy5jaGFyYWN0ZXIobWFzdGVyJFNpdGVfTmFtZVttYXN0ZXIkU29uZGVfSUQ9PXNuXSksCiAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gdmFyc19saXN0LAogICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZWRtZWRpdW0gPSAiTGlxdWlkIGFxdWVvdXMiLAogICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbmJ5ID0gIk5hdGUiLCAKICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnRfbmFtZSA9IGFzLmNoYXJhY3RlcihtYXN0ZXIkU29uZGVfSURbbWFzdGVyJFNvbmRlX0lEPT1zbl0pKQogIHRmPC1TeXMudGltZSgpCiAgdGYtdDAKfQoKI0NyZWF0ZSBsaXN0IG9mIGludGVybWVkaWF0ZSBmaWxlcwpsb2dzPC1saXN0LmZpbGVzKHBhc3RlMCh3b3JraW5nX2RpciwiaW50ZXJtZWRpYXRlIikpCmxvZ3M8LWxvZ3NbbG9ncyE9cGFzdGUwKG1hc3RlciRTb25kZV9JRFttYXN0ZXIkU2l0ZV9OYW1lPT0iR3JlZyBDYXRjaG1lbnQgT3V0bGV0Il0sIi5jc3YiKV0KbG9nczwtbG9nc1tsb2dzIT1wYXN0ZTAobWFzdGVyJFNvbmRlX0lEW21hc3RlciRTaXRlX05hbWU9PSJEb2dib25lIENhdGNobWVudCBPdXRsZXQiXSwiLmNzdiIpXQpsb2dzPC1sb2dzW2xvZ3MhPXBhc3RlMChtYXN0ZXIkU29uZGVfSURbbWFzdGVyJFNpdGVfTmFtZT09IlNvbHV0ZSBDYXRjaG1lbnQgT3V0bGV0Il0sIi5jc3YiKV0KbG9nczwtbG9nc1tsb2dzIT1wYXN0ZTAobWFzdGVyJFNvbmRlX0lEW21hc3RlciRTaXRlX05hbWU9PSJTUiBVcGxhbmQgV2VsbCAxIl0sIi5jc3YiKV0KbG9nczwtbG9nc1tsb2dzIT1wYXN0ZTAobWFzdGVyJFNvbmRlX0lEW21hc3RlciRTaXRlX05hbWU9PSJTUiBVcGxhbmQgV2VsbCAyIl0sIi5jc3YiKV0KbG9nczwtbG9nc1tsb2dzIT1wYXN0ZTAobWFzdGVyJFNvbmRlX0lEW21hc3RlciRTaXRlX05hbWU9PSJTZWFycyBCYXJvIl0sIi5jc3YiKV0KbG9nczwtbG9nc1tsb2dzIT1wYXN0ZTAobWFzdGVyJFNvbmRlX0lEW21hc3RlciRTaXRlX05hbWU9PSJTTiBVcGxhbmQgV2VsbCAxIl0sIi5jc3YiKV0KbG9nczwtbG9nc1tsb2dzIT1wYXN0ZTAobWFzdGVyJFNvbmRlX0lEW21hc3RlciRTaXRlX05hbWU9PSJHUiBCYXJvIl0sIi5jc3YiKV0KICAgCgojUnVuIGZ1bmN0aW9uCnQwPC1TeXMudGltZSgpCmZvcihpIGluIDE6bGVuZ3RoKGxvZ3MpKXsKICBwcmludChpKQogIGZ1bihpKQp9CnRmPC1TeXMudGltZSgpCnRmLXQwCgojIkRCIFVwbGFuZCBXZWxsICIKIyJEb2dib25lIENhdGNobWVudCBPdXRsZXQiCiMiR3JlZyBDYXRjaG1lbnQgT3V0bGV0IgoKI0Rpc2Nvbm5lY3QgZnJvbSBEQgpkYkRpc2Nvbm5lY3QoZGIpCmBgYAo=